package com.yeyks.search.service.hotel;

import com.yeyks.search.pojo.model.EsHotelInfo;

import java.util.List;

/**
 * 导入【酒店， 房间， 房态】数据到 ES 的服务接口
 *
 * @author: dagny
 * @date: 2019/10/9 0009 17:51
 */
public interface EsImportHotelService {

    /**
     * 【yyks_】根据酒店ID 导入酒店数据
     *
     * @param hotelId   酒店ID
     * @param indexName 索引名称
     */
    void importHotelByHotelId(Integer hotelId, String indexName);


    /**
     * 【yyks_】批量 分页导入所有酒店数据
     *
     * @param indexName 索引名称
     */
    void importHotelByPage(String indexName);

    /**
     * 【yyks_】根据酒店Id集合 更新/（录入） 酒店数据
     *
     * @param hotelIdList 酒店集合信息
     * @param indexName   索引名称
     */
    void importHotelByHotelIdList(List<String> hotelIdList, String indexName);

    /**
     * 【yyks_】 根据房间Id集合 更新/（录入）【房间，房态】信息
     *
     * @param roomIdList 房间Id集合
     * @param indexName  索引名称
     */
    void importRoomByRoomIdList(List<String> roomIdList, String indexName);

    /**
     * 【yyks_】 根据房态Id 更新/（录入）房态信息
     *
     * @param calenderIdList 房态Id集合
     * @param indexName      索引名称
     */
    void importCalendarByCalendarIdList(List<String> calenderIdList, String indexName);

    /**
     * 【cnbooking_】 根据酒店ID 导入酒店数据
     *
     * @param hotelId    酒店ID
     * @param indexName  索引名称
     * @param countryId  国家
     * @param provinceId 省
     * @param cityId     城市
     */
    void importCnBookingHotelByHotelId(Integer hotelId,
                                       String indexName,
                                       String countryId,
                                       String provinceId,
                                       String cityId);


    /**
     * 【cnbooking_ 】根据酒店ID 【批量】导入酒店数据
     *
     * @param indexName  索引名称
     * @param countryId  国家
     * @param provinceId 省
     * @param cityId     城市
     * @param pageSize   页大小
     * @param pageNo     当前页
     */
    void importCnBookingHotelByPage(String indexName,
                                    String countryId,
                                    String provinceId,
                                    String cityId,
                                    Integer pageSize,
                                    Integer pageNo);


    /**
     * 批量更新房态的底价和销售价
     *
     * @param indexName 索引名称
     * @param highPercent 销售价上浮百分比 （如） 1.1 表示上涨 10%
     * @param lowPercent 底价下浮百分比 （如） 0.95 表示下浮 5%
     * @param calendarId 房态ID
     * @param pageSize 本页大小
     * @param pageNo 当前页
     *
     */
    void updateCalendarPrice(String indexName, String highPercent, String lowPercent,
                             String calendarId, Integer pageSize,
                             Integer pageNo);

    /**
     * 批量更新房间的图片信息
     * @param indexName 索引名称
     * @param sourceType 资源类型
     * @param pageSize 本页大小
     * @param pageNo 当前页
     */
    void updateRoomImageIndexHotel(String indexName, String sourceType, Integer pageSize, Integer pageNo);


    /**
     * 更新Es中酒店的图片信息
     *
     * @param sourceId 酒店资源ID
     * @param imgJson 图片JSON数据
     * @return true 更新成功， false 更新失败
     */
    Boolean updateHotelImage(String sourceId, String imgJson);

    /**
     * 更新Es中客房的图片信息
     *
     * @param sourceId 房间资源ID
     * @param imgJson 图片JSON数据
     * @return true 更新成功， false 更新失败
     */
    Boolean updateRoomImage(String sourceId, String imgJson);

    /**
     * 定时删除过期数据信息（CN）
     *
     * @param indexName 索引名称
     * @param sourceType 资源类型
     * @param pageSize 页大小
     * @param pageNo 当前页
     * @return
     */
    Boolean delOverTimeCalendarData(String indexName, String sourceType, Integer pageSize, Integer pageNo);

    /**
     * 定时删除房态为空的房间
     *
     * @param indexName 索引名称
     * @param sourceType 资源类型
     * @param pageSize 页大小
     * @param pageNo 当前页
     * @return
     */
    Boolean delRoomByCalendarIsNull(String indexName, String sourceType, Integer pageSize, Integer pageNo);

    /**
     * 定时删除房间为空的酒店
     *
     * @param indexName 索引名称
     * @param sourceType 资源类型
     * @param pageSize 页大小
     * @param pageNo 当前页
     * @return
     */
    Boolean delHotelByRoomIsNull(String indexName, String sourceType, Integer pageSize, Integer pageNo);


    /**
     * 根据ESHotel 导入相关信息
     * @param esHotelInfo
     * @param indexName
     */
    void importRoomAndCalendarByHotel(EsHotelInfo esHotelInfo, String roomId, String indexName);

}
